package com.goodbyegirl1974.cardGameProto.player
{
	import com.goodbyegirl1974.cardGameProto.card.ICard;
	import com.goodbyegirl1974.cardGameProto.config.GameConfig;
	import com.goodbyegirl1974.cardGameProto.parts.Attack;
	import com.goodbyegirl1974.cardGameProto.parts.BattleParameter;
	import com.goodbyegirl1974.cardGameProto.parts.CardDeck;
	import com.goodbyegirl1974.cardGameProto.parts.Parameter;
	
	import flash.utils.Dictionary;

	public class GamePlayer
	{
		private var _cardDeck:CardDeck;
		
		private var _parameter:Parameter;
		
		private var _dataXml:XML;
		
		/**
		 * コンストラクタ。
		 * @param dataXml
		 * 
		 */		
		public function GamePlayer(dataXml:XML = null)
		{
			init();
			this._dataXml = dataXml
		}
		
		/**
		 * 初期化。
		 * 
		 */		
		private function init():void
		{
			this._cardDeck = new CardDeck();
			this._parameter = new Parameter();
			//以下、仮で攻撃を設定。
			var damageNum:Number = 10.0;
			var attackNum:int = 3;
			var hitRate:Number = 0.7;
			var energyPoint:Number = 0.0;
			var attackKind:String = "normal";//攻撃の属性
			if(this._dataXml != null)
			{
				//TODO:xml解析
			}
			//TODO:ここの攻撃登録は仮。本来はXMLから生成すること。
			var attack:Attack = new Attack(damageNum, attackNum, hitRate, energyPoint, attackKind);
			var key:String = GameConfig.ATTACK_KEY_HEADER + "01";
			this._parameter.setAttackDictionary(attack, key);
		}
		
		/**
		 * 外部から渡されたBattleParamterに、各カードの効果・パラメータを反映させる。
		 * @param paramter
		 * @param turn
		 * @return 
		 * 
		 */		
		public function setBattleParamterFromCard(turn:String):void
		{
			//カードデッキ内のファンクションを通す。
			//攻撃か、防御かを渡すこと
			var battleParamter:BattleParameter = BattleParameter.getInstance();
			if(turn == GameConfig.TURN_ATTACK)
				battleParamter.attack = this._parameter.attackDictionary[battleParamter.attackKey];
			this._cardDeck.setBattleParamter(turn);
		}

		public function get parameter():Parameter
		{
			return _parameter;
		}

	}
}